home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / cserial.zip / MONITOR.C < prev    next >
C/C++ Source or Header  |  1990-04-04  |  3KB  |  122 lines

  1. /*
  2.  *                                MONITOR.C
  3.  *
  4.  *              A simple-Minded little Serial Port Monitor
  5.  *
  6.  *                           Written for the
  7.  *
  8.  *                              Datalight
  9.  *                           Microsoft V 5.x
  10.  *                                TurboC
  11.  *                                  &
  12.  *                               Zortech
  13.  *
  14.  *                             C Compilers
  15.  *
  16.  *            Copyright (c) John Birchfield 1987, 1988, 1989
  17.  */
  18.  
  19. #include <stdio.h>
  20. #include "8250xon.h"
  21. #include "monitor.h"
  22. #include "options.h"
  23. #include "_kb.h"
  24.  
  25. #define EOT 4
  26. #define ETX 3
  27. #define TRUE (1)
  28. #define FALSE (0)
  29. #if (!defined (DLC))
  30. extern int cb_happened;
  31. #endif
  32.  
  33. main (argc, argv)
  34. int     argc;
  35. char  **argv;
  36. {
  37.     int     ch;
  38.     int     i;
  39.  
  40.     set_options (argc, argv);
  41.     trap_ctrl_break ();
  42.     timer_init ();
  43.     xon8250_init (Port, 8192);
  44.     fputs ("                  --  Monitor - RS232 Port Snooper  --\n", stdout);
  45.     if (Cfg_Str [0])
  46.     {
  47.         xon8250_port_init (Cfg_Str);
  48.         fputs (Opt_Msg, stdout);
  49.     }
  50.     else
  51.     {
  52.         xon8250_port_enable ();
  53.         fputs ("Using Default Port Settings\n", stdout);
  54.     }
  55.     fputs ("Use <Alt>F10 to exit\n", stdout);
  56.  
  57.     while (TRUE)
  58.     {
  59.         if ((ch = xon8250_read ()) != -1)
  60.         {
  61.             xlate ((char) ch);
  62.         }
  63.         if ((ch = _kb ()) != -1)
  64.         {
  65.             if (ch == APF10)
  66.             {
  67.                 xon8250_term ((Cfg_Str [0])?1:0);
  68.                 timer_term ();
  69.                 release_ctrl_break ();
  70.                 exit (0);
  71.             }
  72.             xon8250_write (ch);
  73.         }
  74.     }
  75. }
  76.  
  77.  
  78.  
  79. int 
  80. xlate (char c)
  81. {
  82.     static int lcnt = 0;
  83.     static char *x_table[] = {
  84.                      "<NUL>", "<SOH>", "<STX>", "<ETX>", "<EOT>", "<ENQ>",
  85.                          "<ACK>", "<BEL>", "<BS>", "<HT>", "<LF>", "<VT>",
  86.                          "<FF>", "<CR>", "<SO>", "<SI>", "<DLE>", "<DC1>",
  87.                      "<DC2>", "<DC3>", "<DC4>", "<NAK>", "<SYN>", "<ETB>",
  88.                         "<CAN>", "<EM>", "<SUB>", "<ESC>", "<FS>", "<GS>",
  89.                               "<RS>", "<US>"
  90.     };
  91.  
  92.     if (c < 32)
  93.     {
  94.         if (c == EOT)
  95.         {
  96.             putchar ('\n');
  97.             lcnt = 0;
  98.         }
  99.         myputs (x_table[c]);
  100.         lcnt += strlen (x_table[c]);
  101.     }
  102.     else
  103.     {
  104.         putchar (c);
  105.         lcnt += 1;
  106.     }
  107.     if (lcnt > 79)
  108.     {
  109.         putchar ('\n');
  110.         lcnt = 0;
  111.     }
  112.     fflush (stdout);
  113. }
  114.  
  115. int 
  116. myputs (s)
  117. char   *s;
  118. {
  119.     while (*s)
  120.         putchar (*s++);
  121. }
  122.